package com.lobov.entities;

public interface EntityIface {

	/**
	 * Возвращает значение элемента структуры по его координатам
	 * 
	 * @param x
	 *            координата по X
	 * @param y
	 *            координата по Y
	 * @return возвращаемый тип double
	 * @throws Exception
	 *             если получаемые значения координат не попадают в размер
	 *             структуры, выбрасывается исключение
	 */
	public double getElementByXY(int x, int y) throws Exception;
	
	
	
	
	public double getElementByX(int x) throws Exception;

	/**
	 * если структура сжата (не хранит нули) то возвращает true
	 */
	public boolean isCompressed();

	/**
	 * сжать(более плотное хранение, без хранения нулей)
	 * то что вернет кастовать к типу сущности
	 * @throws Exception 
	 */
	public EntityIface compress() throws Exception;

	/**
	 * разредить (формат с хранением нулей)
	 * @throws Exception 
	 */
	public EntityIface deCompress() throws Exception;
	
	public void setElementByX(int x, double value) throws Exception;
	
	public void setElementByXY(int x, int y, double value) throws Exception;
	
	
}
